1 REM -------- THE TILE GAME ---------- 2 REM (C) MURDOCK & BLACKBURN '84 3 REM 10/15/1984 4 REM 100 FORX=1TO6:READCH:CO$(X)=CHR$(CH):NEXT 110 DATA 28,158,156,30,150,5 120 B1$=CHR$(154):B2$=CHR$(31):B3$=CHR$(152):C1$=B1$:C2$=CHR$(144) 130 SC$=CHR$(147):HM$=CHR$(19) 135 PRINT SC$;CO$(6) 140 POKE53280,2:POKE53281,2:PRINTSPC(249)"HOLD ON, JUST A SECOND" 150 DO$=HM$:FORX=1TO24:DO$=DO$+CHR$(17):NEXT 160 U3$="":FORX=1TO3:U3$=U3$+CHR$(145):NEXT 170 R3$="":FORX=1TO3:R3$=R3$+CHR$(29):NEXT 180 L5$="":FORX=1TO5:L5$=L5$+CHR$(157):NEXT 190 SP$="":FORX=1TO39:SP$=SP$+" ":NEXT 200 SZ$=CHR$(17)+CHR$(29)+CHR$(110)+CHR$(163)+CHR$(109)+CHR$(157)+CHR$(157) 210 SZ$=SZ$+CHR$(157)+CHR$(17)+CHR$(125) 220 T$=CHR$(111)+CHR$(183)+CHR$(183)+CHR$(183)+CHR$(112)+L5$+CHR$(17) 230 T$=T$+CHR$(165)+R3$+CHR$(167)+L5$+CHR$(17) 240 T$=T$+CHR$(165)+R3$+CHR$(167)+L5$+CHR$(17) 250 T$=T$+CHR$(108)+CHR$(175)+CHR$(175)+CHR$(175)+CHR$(186)+L5$+U3$ 260 BS$=B2$:FORX=1TO5:BS$=BS$+CHR$(166):NEXT 270 BS$=BS$+L5$+CHR$(17):BT$="":FOR X=1TO4:BT$=BT$+BS$:NEXT:BS$=BT$+B1$ 280 DIMCH$(24):FOR X=1TO24:READCH$:CH$(X)=CH$:NEXT 290 DATA A,B,C,D,E 295 DATA F,G,H,I,J 300 DATA K,L,M,N,O 305 DATA P,Q,R,S,T 310 DATA U,V,W,X 320 IF PEEK(49475)<>234 OR PEEK(49806)<>24THEN GOSUB9010 330 PX=0:POKE53280,PX:POKE53281,PX 340 PRINTSC$:K$="" 350 PRINTDO$;SP$;B1$;:GOSUB8010:GOTO360 360 PRINTHM$; 370 ROW=5:COL=1:BR=5:BC=5:MV=0:CU$=T$ 380 PRINT DO$;SPC(7);CO$(2);"JOYSTICK OR KEYBOARD (J/K)"C2$; 390 GETKK$:IFKK$=""THEN390 400 IFKK$="J" THEN420 410 IFKK$<>"K" THEN390 420 PRINTDO$;SP$;:GOSUB3040 430 REM *** MIX Y/N PRINT *** 440 PRINTCO$(4);DO$;LEFT$(SP$,15);"MIX (Y/N)"; 450 GETA$:IFA$=""THEN450 460 IFA$= "Y"THEN PRINTDO$;SP$;:GOSUB3040:GOSUB4010:MV=0:PRINTDO$;SP$;:GOTO490 470 IFA$= "N"THEN PRINTDO$;SP$;:GOTO490 480 GOTO450 490 CU$=T$:GOSUB3040:IFKK$="K" THEN7000 500 GOTO2010 1000 REM *** SCROLL ROUTINE *** 1010 MV=MV+1:PRINTDO$B2$"MOVE"B1$;MV; 1020 ON D GOTO1030,1050,1060,1080 1030 ML=49661:R=5:VU=0:COL=COL-HU 1040 GOTO1090:REM *LEFT 1050 ML=49735:R=5:VU=0:GOTO1090:REM *RT 1060 ML=49416:R=4:HU=0:ROW=ROW-VU 1070 GOTO1090:REM *UP 1080 ML=49483:R=4:HU=0:GOTO1090:REM *DN 1090 L=(COL-1)*5+8:T=(ROW-1)*4+2 1100 H=(HU+1)*5:V=(VU+1)*4 1110 POKE251,L:POKE252,T:POKE253,H-1:POKE254,V-1 1120 GOSUB6510 1130 FOR X=1TOR 1140 POKE254,V-1:POKE2,1 1150 SYS ML 1160 NEXT 1170 POKE S+4,16 1180 RETURN 1500 GET K$:IF K$=""THEN1500 1510 RETURN 2000 REM *** READ JOY STICK *** 2010 JV=PEEK(56320) 2020 GETK$:IFK$=CHR$(147)THEN350 2030 FR=JVAND16:IF FR<>16THEN GOSUB5010:GOTO2010 2040 JV=15-(JVAND15) 2050 IF JV=0 THEN GOSUB2110:GOTO2010 2060 IF JV=1 AND ROW>1 THEN ROW=ROW-1:GOSUB3010:GOTO2010 2070 IF JV=2 AND ROW<5 THEN ROW=ROW+1:GOSUB3010:GOTO2010 2080 IF JV=8 AND COL<5 THEN COL=COL+1:GOSUB3010:GOTO2010 2090 IF JV=4 AND COL>1 THEN COL=COL-1:GOSUB3010:GOTO2010 2100 GOTO2010:REM * INVALID DIRECTION * 2110 PRINTC1$;T$; 2120 PRINTC2$;T$; 2130 RETURN 3000 REM ******* SET CURSOR ******* 3010 IF FL THEN CU$=BS$ 3020 PRINTC1$;CU$;C2$; 3030 CU$=T$ 3040 R=(ROW-1)*4+2:C=(COL-1)*5+8 3050 POKE251,R:POKE252,C 3060 SYS 49806 3070 PRINTCU$; 3080 IF ROW=BR AND COL=BC THEN FL=1:GOTO3100 3090 FL=0 3100 RETURN 4000 REM ******* RANDOM MIX ******* 4010 A=RND(RND(0)):PRINTLEFT$(DO$,5);B2$;"MIXING"B1$;:GOSUB3040 4020 FOR MX=1 TO 20 4030 GOSUB4180 4040 IFA2=1THENROW=BR:COL=BC-A:GOTO4060 4050 ROW=BR:COL=BC+A 4060 IF COL<1 OR COL>5 THEN4030 4070 GOSUB3010:GOSUB5010 4080 GETK$:IFK$<>"" THEN4160 4090 GOSUB4180 4100 IFA2=1THENCOL=BC:ROW=BR-A:GOTO4120 4110 COL=BC:ROW=BR+A 4120 IF ROW<1 OR ROW>5 THEN4090 4130 GOSUB3010:GOSUB5010 4140 GETK$:IFK$<>"" THEN4160 4150 NEXT 4160 PRINTLEFT$(DO$,5);LEFT$(SP$,6);:GOSUB3040 4170 RETURN 4180 A=INT(RND(1)*4)+1 4190 A2=INT(RND(1)*2) 4200 RETURN 5000 REM *** PREPARE TO SCROLL *** 5010 IF COL<>BC THEN5060 5020 IF BR=ROW THEN RETURN 5030 VU=ABS(ROW-BR):D=4:TR=ROW+1 5040 IF BRBR THEN GOSUB6010:RETURN 5070 HU=ABS(COL-BC):D=2:TC=COL+1 5080 IF BCBC THEN RETURN 6000 REM ******* BUZZER ******* 6010 FORA=1TO8:POKE54296,15:FORT=1TO3:NEXT:POKE54296,0:FORT=1TO3:NEXT:NEXT 6020 RETURN 6500 REM *** PONG SUBROUTINE *** 6510 S=54272 6520 POKE S+1,20 6530 POKE S+5,9 6540 POKE S+6,9 6550 POKE S+24,4 6560 POKE S+4,17 6570 RETURN 7000 REM *** GET KEYBOARD INPUT *** 7010 GETK$:IFK$="" THEN GOSUB2110:GOTO7010 7020 IFK$=CHR$(147)THEN350 7030 IFK$=" " THEN GOSUB5000:GOTO7010 7040 IF K$="A" AND ROW>1 THEN ROW=ROW-1:GOSUB3010:GOTO7010 7050 IF K$="Z" AND ROW<5 THEN ROW=ROW+1:GOSUB3010:GOTO7010 7060 IF K$="." AND COL<5 THEN COL=COL+1:GOSUB3010:GOTO7010 7070 IF K$="," AND COL>1 THEN COL=COL-1:GOSUB3010:GOTO7010 7080 GOTO7010 8000 REM ******* DRAW BOARD ******* 8010 CH=1:PRINTB1$;:IFK$=CHR$(147)THEN8100 8020 PRINTHM$;SPC(6);CHR$(117);:FORX=1TO27:PRINTCHR$(96);:NEXT:PRINTCHR$(105) 8030 PRINTSPC(6)CHR$(98);" ";:FORX=1TO25:PRINTCHR$(164);:NEXT:PRINT" "CHR$(98) 8040 PRINTLEFT$(DO$,2):FOR X=1 TO 20 8050 PRINT SPC(6);CHR$(98);CHR$(167);SPC(25);CHR$(180);CHR$(98) 8060 NEXT 8070 PRINTHM$;LEFT$(DO$,23); 8080 PRINTSPC(6)CHR$(98);" ";:FORX=1TO25:PRINTCHR$(163);:NEXT:PRINT" "CHR$(98) 8090 PRINTSPC(6);CHR$(106);:FORX=1TO27:PRINTCHR$(96);:NEXT:PRINTCHR$(107) 8100 FOR ROW=1 TO 5 8110 FOR COL=1 TO 5 8120 IF ROW=5 AND COL=5 THEN PRINTB3$;:CU$=BS$:GOSUB3040:GOTO8170 8130 PRINTB3$;:CU$=BS$:GOSUB 3040 8140 PRINTB1$;:CU$=T$:GOSUB3040 8150 PRINTB2$;:CU$=SZ$:GOSUB3040 8160 PRINTCO$(ROW);CH$(CH);B2$;CHR$(125):CH=CH+1 8170 NEXT COL 8180 NEXT ROW 8190 RETURN 9000 REM ******* ML ROUTINES ******* 9010 FORI=49416TO49815 9020 READT:POKEI,T:NEXT 9030 RETURN 49416 DATA32,226,193,165,251,166,252,32,155,193,32,205,193,166,254,202,48 49433 DATA21,24,165,208,105,40,133,210,133,214,165,209,105,0,133,211,32 49450 DATA119,193,202,16,235,164,253,185,32,192,145,208,185,72,192,145,212 49467 DATA136,16,243,32,226,193,88,96,234,234,234,234,234,234,234,234,32 49484 DATA226,193,32,132,194,170,165,251,32,155,193,32,205,193,166,254,202 49501 DATA240,208,56,165,208,233,40,133,210,133,214,165,209,233,0,133,211 49518 DATA24,32,119,193,202,16,234,48,184,41,3,9,216,133,215,164,253 49535 DATA177,210,145,208,177,214,145,212,136,16,245,165,211,133,209,165,210 49552 DATA133,208,165,215,133,213,165,214,133,212,96,72,169,216,133,208,172 49569 DATA136,2,136,132,209,24,165,208,105,40,133,208,165,209,105,0,133 49586 DATA209,202,16,240,24,104,101,208,133,208,133,212,165,209,105,0,133 49603 DATA209,41,3,9,216,133,213,164,253,96,165,2,208,3,169,32,44 49620 DATA177,208,153,32,192,177,212,153,72,192,136,16,236,96,120,162,30 49637 DATA181,208,72,189,0,192,149,208,104,157,0,192,202,16,241,96,234 49654 DATA234,234,234,234,234,234,234,32,226,193,32,132,194,165,251,166,211 49671 DATA32,155,193,160,0,177,208,133,210,177,212,72,144,13,200,177,208 49688 DATA72,177,212,136,145,212,104,145,208,200,196,253,144,239,165,2,208 49705 DATA3,169,32,44,165,210,145,208,104,145,212,198,211,198,254,16,201 49722 DATA32,226,193,88,96,234,234,234,234,234,234,234,234,32,226,193,32 49739 DATA132,194,165,251,166,211,32,155,193,177,208,133,210,177,212,72,164 49756 DATA253,240,15,136,177,208,72,177,212,200,145,212,104,145,208,136,208 49773 DATA241,165,2,208,3,169,32,44,165,210,145,208,104,145,212,198,211 49790 DATA198,254,16,203,48,182,166,252,138,24,101,254,133,211,96,234,24 49807 DATA164,252,166,251,32,240,255,96,234